#!/usr/bin/perl

use strict;
use warnings;
use Switch;

my $Pais = 'A';
my $CodigoSistema = '7'; #[^;]*
my $AnoContable = '2013';
my $MesContable = '1';
my $PorcentajeComparacion = '10';

my $CONF_DIR = "../conf/InstalY.conf";

&Consulta($Pais,$CodigoSistema,$AnoContable,$MesContable,$PorcentajeComparacion);


sub Consulta
{
	my($Pais,$CodigoSistema,$AnoContable,$MesContable,$PorcentajeComparacion) = @_;
	# Leo del archivo de configuracion la variable MAE_DIR
	my $MAE_DIR = `grep '^MAEDIR' "$CONF_DIR" | cut -f2 -d'='`;
	chomp($MAE_DIR);
	my $MAE_FILE = "$MAE_DIR/PPI.mae";

	# 1. Filtro el archivo maestro
	my @FILTRO_MAE = `grep "^$Pais;$CodigoSistema;$AnoContable;$MesContable;" "$MAE_FILE"`;
	#print @FILTRO_MAE;

	my @SALIDA;
	# 2. Calculo el monto restante del maestro
	foreach my $regmae (@FILTRO_MAE)
	{
		my %MaeActual;
		my @DatosMae = split(/;/,$regmae);
		my $Monto = 0;
		$MaeActual{Anio} = $DatosMae[2];
		$MaeActual{Mes} = $DatosMae[3];
		$MaeActual{Dia} = $DatosMae[4];
		$MaeActual{FechaContable} = "$MaeActual{Anio}$MaeActual{Mes}$MaeActual{Dia}";
		$MaeActual{Estado} = $DatosMae[5];
		$MaeActual{CodigoPrestamo} = $DatosMae[7];
		#$Monto = $Pres + $Impago + $Inde + $Innode - $Deb;
		chomp($DatosMae[9] = `echo $DatosMae[9] | sed 's/,/./'`);
		chomp($DatosMae[10] = `echo $DatosMae[10] | sed 's/,/./'`);
		chomp($DatosMae[11] = `echo $DatosMae[11] | sed 's/,/./'`);
		chomp($DatosMae[12] = `echo $DatosMae[12] | sed 's/,/./'`);
		chomp($DatosMae[13]);
		chomp($DatosMae[13] = `echo $DatosMae[13] | sed 's/,/./'`);
		$MaeActual{MontoRestante} = $DatosMae[9]+$DatosMae[10]+$DatosMae[11]+$DatosMae[12]-$DatosMae[13];
		#print %MaeActual;

		my %Prestamo = &ObtenerPrestamo($Pais,$MaeActual{CodigoPrestamo},$AnoContable,$MesContable);
		#print %Prestamo;
		#print "Mae:$MaeActual{MontoRestante} Prestamo:$Prestamo{MontoRestante}\n";

		my %Salida;
		
		my $Diferencia=abs($MaeActual{MontoRestante}-$Prestamo{MontoRestante});
		my $Porcentaje=0;

		if(abs($MaeActual{MontoRestante})!=0){
			$Porcentaje= ($Diferencia/abs($MaeActual{MontoRestante}))*100;
		}
	
		#print "$MaeActual{MontoRestante}\n";
		# -- Cuarto Paso --
		if($Porcentaje > $PorcentajeComparacion){
			$Salida{CodigoPrestamo} = $MaeActual{CodigoPrestamo};
			$Salida{MontoMaestro} = $MaeActual{MontoRestante};
			$Salida{MontoPrestamo} = $Prestamo{MontoRestante};
			$Salida{Porcentaje} = $Porcentaje;
			push @SALIDA, {%Salida};
		}
	}
	#print @SALIDA;
	#my $var = $SALIDA[3]{Estado};
	#print "var:$var\n";
	&MostrarResultados(@SALIDA);
}

sub MostrarResultados
{
	my(@SALIDA) = @_;
	my $arrSize = @SALIDA;
	#foreach my $reg (@SALIDA)
	for (my $i=0; $i < $arrSize; $i++)
	{
		#my $var = $SALIDA[$i]{CodigoPrestamo};
		#print "CodigoPrestamo:$var";
#		print "CodigoPrestamo:$reg{CodigoPrestamo},CodigoCliente:$reg{CodigoCliente}, EstadoMaestro:$reg{EstadoMaestro},EstadoPrestamo:$reg{EstadoPrestamo},MontoMaestro:$reg{MontoMaestro},MontoPrestamo:$reg{MontoPrestamo}\n";
		print "CodigoPrestamo:$SALIDA[$i]{CodigoPrestamo},MontoMaestro:$SALIDA[$i]{MontoMaestro},MontoPrestamo:$SALIDA[$i]{MontoPrestamo},Porcentaje:$SALIDA[$i]{Porcentaje}\n";
	}
}

sub ObtenerPrestamo
{
	my($Pais,$CodigoPrestamo,$AnoContable,$MesContable) = @_;

	# 3. Obtengo registro del prestamos.pais
	# Leo del archivo de configuracion la variable MAE_DIR
	chomp(my $PROC_DIR = `grep '^PROCDIR' "$CONF_DIR" | cut -f2 -d'='`);
	my @FILTRO_PRESTAMO = `grep "^[^;]*;$AnoContable;0$MesContable;[^;]*;[^;]*;$CodigoPrestamo;" "$PROC_DIR/PRESTAMO.$Pais"`;
	#print @FILTRO_PRESTAMO;

	# Obtengo el registro del PRESTAMO.PAIS
	my $FechaContableMaxima = 10000101;
	my $FechaProcesoMaxima = 10000101;
	my %Prestamo;
	foreach my $regpres (@FILTRO_PRESTAMO)
	{
		my %PrestamoActual;
		my @DatosPrestamo = split(/;/,$regpres);
		$PrestamoActual{Anio} = $DatosPrestamo[1];
		$PrestamoActual{Mes} = $DatosPrestamo[2];
		$PrestamoActual{Dia} = $DatosPrestamo[3];
		$PrestamoActual{FechaProceso} = DesformatearFecha($DatosPrestamo[14]);
		$PrestamoActual{FechaContable} = "$PrestamoActual{Anio}$PrestamoActual{Mes}$PrestamoActual{Dia}";
		$PrestamoActual{Estado} = $DatosPrestamo[4];
		chomp($PrestamoActual{MontoRestante} = `echo $DatosPrestamo[11] | sed 's/,/./'`);
		$PrestamoActual{CodigoCliente} = $DatosPrestamo[12];

		if ($FechaContableMaxima < $PrestamoActual{FechaContable} || ($FechaContableMaxima == $PrestamoActual{FechaContable} && $FechaProcesoMaxima < $PrestamoActual{FechaProceso}))
		{
			$FechaContableMaxima = $PrestamoActual{FechaContable};
			$FechaProcesoMaxima = $PrestamoActual{FechaProceso};
			# Guardo los datos del registro
			%Prestamo = %PrestamoActual;
		}
	}
	#print %Prestamo;
	return %Prestamo;
}

sub DesformatearFecha
{
	my($Fecha) = @_;

	my @ArrayFecha = split(/\//,$Fecha);
	my $Anio = $ArrayFecha[2];
	my $Mes = $ArrayFecha[1];
	my $Dia = $ArrayFecha[0];
	my $retFecha = "$Anio$Mes$Dia";

	return $retFecha;
}
